package cn.jingyinghui.service;

import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionChoice;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
import com.volcengine.ark.runtime.service.ArkService;
import okhttp3.ConnectionPool;
import okhttp3.Dispatcher;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;


/**
 * 用豆包测试生成的AI脚本
 */
public class BuyerPromptGenerator {


    static String MODLE_NAME = "doubao-1.5-thinking-pro-250415";
    static String API_KEY = System.getenv("ARK_API_KEY");

    static String BASE_URL = "https://ark-cn-beijing.bytedance.net/api/v3";

    // 此为默认路径，您可根据业务所在地域进行配置
    static ConnectionPool connectionPool = new ConnectionPool(5, 1, TimeUnit.SECONDS);
    static Dispatcher dispatcher = new Dispatcher();
    static ArkService service = ArkService.builder().dispatcher(dispatcher).connectionPool(connectionPool).apiKey(API_KEY).build();





    public static void main(String[] args) {
        String title = "产自新疆阿勒泰天山，昼夜温差大，积累大量糖分，口感香甜软糯...";
        String prompt = generateBuyerPrompt(title);
        System.out.println("生成的买家脚本：\n" + prompt);
    }

    private static String generateBuyerPrompt(String productTitle) {


        String rawResult = null;

        // 预处理：增强可读性
        String cleanedTitle = preprocessTitle(productTitle);





        // 初始化消息列表
        List<ChatMessage> chatMessages = new ArrayList<>();
        // 创建用户消息
        ChatMessage userMessage = ChatMessage.builder()
//                .role(ChatMessageRole.USER) // 设置消息角色为用户
                .role(ChatMessageRole.SYSTEM) // 设置消息角色为用户

                .content(buildSystemPrompt(cleanedTitle)) // 设置消息内容
                .build();

        // 将用户消息添加到消息列表
        chatMessages.add(userMessage);
        // 创建聊天完成请求
        ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
                .model(MODLE_NAME)
                .messages(chatMessages) // 设置消息列表
                .build();

        // 发送聊天完成请求并打印响应
        try {
            // 获取响应并打印每个选择的消息内容
            service.createChatCompletion(chatCompletionRequest)
                    .getChoices()
                    .forEach(choice -> {
                        // 校验是否触发了深度思考，打印思维链内容
                        if (choice.getMessage().getReasoningContent() != null) {
                            System.out.println("推理内容: " + choice.getMessage().getReasoningContent());
                        } else {
                            System.out.println("推理内容为空");
                        }
                        // 打印消息内容
                        System.out.println("消息内容: " + choice.getMessage().getContent());
                    });
        } catch (Exception e) {
            System.out.println("请求失败: " + e.getMessage());
        } finally {
            // 关闭服务执行器
            service.shutdownExecutor();
        }
        // 生成初始提示
//        String rawResult = model.chat(buildSystemPrompt(cleanedTitle));

        List<ChatCompletionChoice> choices = service.createChatCompletion(chatCompletionRequest)
                .getChoices();

        rawResult = choices.get(0).getMessage().getContent().toString();

        System.out.println("原始结果：" + rawResult);

        // 后处理校验
        return postProcessResult(rawResult, productTitle);
    }

    private static String preprocessTitle(String title) {
        // 简单清洗：替换标点为自然分隔符
        return title.replace("，", " ")
                .replace("。", " ")
                .trim();
    }

    private static String buildSystemPrompt(String title) {
        return """
            你是一个电商人设生成专家，请按以下结构转换商品标题：
            1. 身份：20字内的典型用户画像
            2. 需求：用“看重...”“希望...”句式表达核心诉求
            3. 场景：具体使用情境描述
            
            附加要求：
            - 必须包含产地、甜度、新鲜度要素
            - 用25岁女性吃货的口吻
            - 禁止讨论价格
            
            商品标题：""" + title;
    }

    private static String postProcessResult(String result, String originalTitle) {
        // 关键信息校验
        if (!containsRequiredKeywords(result, originalTitle)) {
            result += "\n（系统自动补充：要求确保产地为新疆阿勒泰天山）";
        }

        // 长度控制
        return result.length() > 500 ? result.substring(0, 497) + "..." : result;
    }

    private static boolean containsRequiredKeywords(String result, String title) {
        // 简单关键词校验（可根据业务需求扩展）
        return title.contains("新疆") ? result.contains("新疆") : true;
    }
}